package dao;

import bean.*;

public abstract class DAOFactory {
	public static final int MYSQL=1;
	public static final int ORACLE=2;
	
	//Documentos de Pago
	public abstract Entidad<Documento_pago> getDocumento_pagoDAO();
	public abstract Entidad<Boleta> getBoletaDAO();
	public abstract Entidad<Factura> getFacturaDAO();
	public abstract Entidad<Nota_Credito> getNota_CreditoDAO();
	public abstract Entidad<Detalle_Documento_Pago> getDocumento_PagoDAO();
	public abstract Entidad<Proveedor> getProveedorDAO();
	public abstract Entidad<Pedido_Adquisicion> getPedido_AdquisicionDAO();
	public abstract Entidad<Detalle_Pedido_Adquisicion> getDetalle_Pedido_AdquisicionDAO();
	public abstract Entidad<Persona> getPersonaDAO() ;
	public abstract Entidad<Cliente> getClienteDAO() ;
	public abstract Entidad<Detalle_guia_de_entrada> getDetalle_guia_de_entradaDAO();
	public abstract Entidad<Guia_de_entrada> getGuia_de_entradaDAO() ;
	public abstract Entidad<Cotizacion> getCotizacionDAO();
	public abstract Entidad<Detalle_cotizacion> getDetalle_cotizacionDAO();
	public abstract Entidad<Guia_de_salida> getGuia_de_salidaDAO();	
	public abstract Entidad<Detalle_guia_de_salida> getDetalle_guia_de_salidaDAO();
	public abstract Entidad<Marca> getMarcaDAO();
	public abstract Entidad<Producto> getProductoDAO();
	public abstract Entidad<Pais> getPaisDAO();
	public abstract Entidad<Departamento> getDepartamentoDAO();
	public abstract Entidad<Provincia> getProvinciaDAO();
	public abstract Entidad<Distrito> getDistritoDAO();
	public abstract Entidad<Empleado> getEmpleadoDAO();
	public abstract Entidad<Comprobante_Pago> getComprovante_PagoDAO();
	public abstract Entidad<Detalle_Comprobante_Pago> getDetalle_Comprovante_PagoDAO();

	
	public static DAOFactory getFactoryConcrete(int opcion){
		switch (opcion) {
		case MYSQL:
			return new MySQLFactory();
		case ORACLE:
			return new OracleFactory();
		default:
			break;
		}
		return null; 
	}
}
